package com.wanjia.estate.pojo.bank;

import lombok.AccessLevel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

import java.io.Serializable;

@NoArgsConstructor(access = AccessLevel.PRIVATE)
public class Status {

    @Data
    @EqualsAndHashCode(callSuper = true)
    public static class Header extends CommonHeader {
        public Header() {
            setBizMethod(BIZ_METHOD_QUERY);
        }
    }

    @Data
    public static class Request implements Serializable {
        /**
         * 接入类型
         * 0：普通商户直连接入
         * 1：收单机构接入
         */
        private String accessType;
        /**
         * 收单机构代码
         * 已被批准加入银联互联网系统的收单机构代码
         */
        private String acqInsCode;
        /**
         * 商户代码
         * 已被批准加入银联互联网系统的商户代码
         * 固定15位长，仅支持数字和字母
         */
        private String merId;
        /**
         * 商户订单号，不能含“-”或“_”
         * 原账单支付交易的订单号
         */
        private String orderId;
        /**
         * 商户发送交易时间
         * 格式：  yyyyMMddHHmmss
         * 原账单支付交易的交易时间
         */
        private String txnTime;
    }

    @Data
    @EqualsAndHashCode(callSuper = true)
    public static class Response extends CommonResponse {
        /**
         * 接入类型
         * 0：普通商户直连接入
         * 1：收单机构接入
         */
        private String accessType;
        /**
         * 商户代码
         * 已被批准加入银联互联网系统的商户代码
         * 固定15位长，仅支持数字和字母
         */
        private String merId;
        /**
         * 商户订单号，不能含“-”或“_”
         * 仅支持数字和字母
         */
        private String orderId;
        /**
         * 商户发送交易时间，
         * 格式：  yyyyMMddHHmmss
         */
        private String txnTime;
        /**
         * 请求方保留域
         */
        private String reqReserved;
        /**
         * 清算日期
         * 格式为MMDD
         * 资金类交易统一返回
         */
        private String settleDate;
        /**
         * 清算币种
         * 3位数字。
         * 资金类交易统一返回
         */
        private String settleCurrencyCode;
        /**
         * 清算金额
         * 仅支持数字。
         * 单位为币种对应的最小单位，参数值不能带小数
         * 仅支持数字
         */
        private String settleAmt;
        /**
         * 清算主键
         * 交易的清算主键，用于勾兑清算流水。
         * 其内容为银联清算流水（即ZM、COM文件）记录的主键拼装而成，从左到右组成如下表：
         * 位置:内容
         * 1–11:收单机构代码，不含长度位，左对齐，右补空格
         * 12–22:发送机构代码，不含长度位，左对齐，右补空格
         * 23–28:系统跟踪号
         * 29–38:交易传输时间
         */
        private String settleKey;
        /**
         * 交易状态
         * 查询成功时出现
         * SUCCESS：交易成功
         * PROCESSING：交易处理中
         * UNKNOWN：交易结果未知
         * FAILURE：交易失败
         */
        private String transStatus;
        /**
         * Base64编码实体类
         *
         * @see BillDetailInfo
         */
        private String billDetailInfo;
    }
}
